package com.kaili.common.util;/**
 * Created by zs on 18-7-18.
 */

import java.math.BigDecimal;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Desc: 正则表达式工具类
 * @author: zs
 * @Time: 18-7-18 下午3:30
 * @Copyright: © 2018 杭州凯立通信有限公司 版权所有
 * @Warning: 本内容仅限于公司内部传阅, 禁止外泄或用于其它商业目的
 */
public class CommonRegexUtil {

    /**
     * 重量正则,最大为99999999.99
     */
    public static final String REGEX_WEIGHT = "^(([1-9]{1}\\d{0,7})|([0]{1}))(\\.(\\d){0,2})?$";

    /**
     * 体积正则,最大为999999.9999
     */
    public static final String REGEX_VAL = "^(([1-9]{1}\\d{0,5})|([0]{1}))(\\.(\\d){0,4})?$";

    /**
     * 金额正则,最大为9999999.99
     */
    public static final String REGEX_MONEY = "^(([1-9]{1}\\d{0,6})|([0]{1}))(\\.(\\d){0,2})?$";

    /**
     * uuid正则
     */
    public static final String REGEX_UUID = "^[A-Za-z0-9]{1,32}$";

    /**
     * uuid正则或者空
     */
    public static final String REGEX_UUID_OR_NULL = "(^\\s$)|(^[A-Za-z0-9]{1,32}$)";

    /**
     * 运单号正则
     */
    public static final String REGEX_EWB_NO = "^[A-Za-z0-9]{1,30}$";

    /**
     * 运单号正则或者空
     */
    public static final String REGEX_EWB_NO_NULL = "^[A-Za-z0-9]{0,30}$";

    /**
     * 正则匹配
     * @param regex
     * @param value
     * @return
     */
    public static boolean isRegexMatch(String regex,String value){
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher=pattern.matcher(value);
        if(matcher.matches()){
            return true;
        }

        return false;
    }

    /**
     * 判断重量是否合法
     * @param str
     * @return
     */
    public static boolean isRegexWeight(double value){
        return isRegexMatch(REGEX_WEIGHT,String.valueOf(value));
    }

    /**
     * 判断重量是否合法
     * @param str
     * @return
     */
    public static boolean isRegexWeight(BigDecimal value){
        return isRegexMatch(REGEX_WEIGHT,String.valueOf(value));
    }

    /**
     * 判断体积是否合法
     * @param str
     * @return
     */
    public static boolean isRegexVal(double value){
        return isRegexMatch(REGEX_VAL,String.valueOf(value));
    }

    /**
     * 判断体积是否合法
     * @param str
     * @return
     */
    public static boolean isRegexVal(BigDecimal value){
        return isRegexMatch(REGEX_VAL,String.valueOf(value));
    }

    /**
     * 判断金额是否合法
     * @param str
     * @return
     */
    public static boolean isRegexMoney(BigDecimal value){
        return isRegexMatch(REGEX_MONEY,String.valueOf(value));
    }

    public static void main(String[] args){
        System.out.println(isRegexMoney(new BigDecimal(1)));
    }
}
